1. Field of the Invention
The invention pertains to a memory system having an array of memory cells connected along wordlines and bitlines, and two separate sets of wordline drivers for driving the wordlines (for example, a flash memory system of this type which includes an array of flash memory cells and emulates a magnetic disk drive). More specifically, the invention pertains to such a system (and a method for operating such a system) capable of simultaneously selecting two or more rows of cells of a memory cell array (each row connected along a different wordline), so that programming operations can be performed on, data can be written to, or data can be read from the selected rows simultaneously.
2. Description of Related Art
It is conventional to implement a memory system as an integrated circuit including an array of flash memory cells (or other non-volatile memory cells) and circuitry for independently erasing selected blocks of the cells, programming selected ones of the cells (i.e., writing data to selected ones of the cells), and reading data from selected ones of the cells.
Typically, a flash memory cell array comprises flash memory cells arranged in rows and columns, with each row connected along a different wordline and each column connected along a different bitline. A flash memory cell is typically implemented by a floating-gate N-channel transistor (such as transistor 14A shown schematically in FIG. 2, to be discussed below). All the cells in a column have their drain regions connected to a common bitline, and all the cells in a row have their control gates connected to a common wordline. All the cells have their sources connected to a source line (typically a common source line that is shared by all cells).
A wordline driver applies a selected voltage to each wordline. In a typical architecture, the wordlines are driven by two physically separated sets of wordline drivers (e.g., one set of address decoding and wordline driving circuitry on the left side of the array which drives the even numbered wordlines, and a second set of address decoding and wordline driving circuitry on the right side of the array which drives the odd numbered wordlines).
It is also conventional to design a flash memory system to emulate a magnetic disk drive system, so that an external device (e.g., host processor) can address the cells of the array in a manner emulating that in which conventional magnetic disk storage locations are addressed.
The dominant computer operating system known as "DOS" (Disk Operating System) is essentially a software package used to manage a disk system. DOS has been developed by IBM Corporation, Microsoft Corporation, and Novell as the heart of widely used computer software. The first generation of Microsoft Corporation's "Windows" operating system software was essentially a continuation of the original DOS software with a user friendly shell added for ease of use.
The DOS software was developed to support the physical characteristics of magnetic hard disk drive structures, and thus supports file structures based on heads, cylinders and sectors. The DOS software stores and retrieves data based on these physical attributes. Magnetic hard disk drives operate by storing polarities on magnetic material. This material is able to be rewritten quickly and as often as desired. These characteristics have allowed DOS to develop a file structure that stores files at a given location which is updated by a rewrite of that location as information is changed. Essentially all locations in DOS are viewed as fixed and do not change over the life of the disk drive being used therewith, and are easily updated by rewrites of the smallest supported block of this structure. A sector (of a magnetic disk drive) is the smallest unit of storage that the DOS operating system will support. In particular, a sector has come to mean 512 bytes of information for DOS and most other operating systems in existence. DOS also uses clusters as a storage unit. Clusters, however, are nothing more than the logical grouping of sectors to form a more efficient way of storing files and tracking them with less overhead.
The development of flash memory integrated circuits has enabled a new technology to offer competition to magnetic hard drives and offer advantages and capabilities that are hard to support by disk drive characteristics and features. The low power, high ruggedness, and small sizes offered by a solid state flash memory system make such a flash memory system attractive and able to compete with a magnetic hard disk drive system. Although a memory implemented with flash memory technology may be more costly than a hard disk drive system, computers and other processing systems are being developed that require (or benefit greatly from) use of flash memory features.
Thus, flash memory systems have been developed that emulate the storage characteristics of hard disk drives. Such a flash memory system is preferably structured to support storage in 512 byte blocks along with additional storage for overhead bits associated with mass storage, such as ECC (error correction code) bits. A key to this development is to make the flash memory array respond to a host processor in a manner that looks like a disk so the operating system can store and retrieve data in a known manner and be easily integrated into a computer system including the host processor.
In some flash memory systems that emulate the storage characteristics of hard disk drives, the interface to the flash memory is identical to a conventional interface to a conventional magnetic hard disk drive. This approach has been adopted by the PCMCIA standardization committee, which has promulgated a standard for supporting flash memory systems with a hard disk drive protocol. A flash memory card (including one or more flash memory array chips) whose interface meets this standard can be plugged into a host system having a standard DOS operating system with a PCMCIA-ATA (or standard ATA) interface. Such a flash memory card is designed to match the latter standard interface, but must include an onboard controller which manages each flash memory array independent of the host system.
Memory systems having arrays of cells connected along bitlines and wordlines (e.g., flash memory system of any of the types described above) are often manufactured with defects of the following type: there is at least one short circuit between at least one pair of the wordlines. Each such short circuit can allow undesirable current flow from one to another of the shorted wordlines in certain circumstances, which can cause read failures when attempting to read cells connected along any of the shorted wordlines, and which can cause failure of a programming operation performed (on cells connected along any of the shorted wordlines) preliminary to an erase operation.
Thus, when such a wordline-to-wordline short circuit has been identified (e.g., as a result of any suitable conventional test procedure), one of the following measures must be taken:
all the shorted wordlines are selected simultaneously prior to (and during) each programming operation, to prevent the wordline supply (the source of voltage applied to the relevant wordlines) from shorting to ground during the programming operation; or PA1 the system avoids programming one or more blocks of cells including all cells connected along the shorted wordlines (e.g., it avoids programming an erase block which includes all cells connected along the shorted wordlines), the system avoids subsequent programming or reading of each such block, and the system replaces any data previously stored in each such block (by programming the same data to one or more substitute blocks).
Until the present invention it had not been known how efficiently to perform such simultaneous selection of shorted wordlines, particularly in cases in which the shorted wordlines are driven by different wordline driver circuits (e.g., in cases in which one wordline is driven by a first wordline driver circuit on one side of the array and another wordline is driven by a second wordline driver circuit on the other side of the array.